package com.mzz.behavior.classandclass.observer;

import java.util.Enumeration;
import java.util.Vector;

/**
 * 维护观察者抽象类
 * @author xushijian
 * @date 18/5/10 下午5:00
 */
public abstract class AbstractSubject implements Subject {

    private Vector<Observer> observers = new Vector<Observer>();

    /**
     * 添加观察者
     *
     * @param observer 观察者
     */
    public void add(Observer observer) {

        observers.add(observer);

    }

    /**
     * 移除观察者
     *
     * @param observer 观察者
     */
    public void del(Observer observer) {
        observers.remove(observer);
    }

    /**
     * 通知所有观察者
     */
    public void notifyObservers() {

        Enumeration<Observer> elements = observers.elements();

        while (elements.hasMoreElements()) {
            elements.nextElement().update();
        }
    }

}
